package com.gqh.weather.auth;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 用户认证信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo {
    
    /**
     * 用户ID
     */
    private Integer uid;
    
    /**
     * 用户名
     */
    private String username;
    
    /**
     * 账号
     */
    private String account;
    
    /**
     * 手机号
     */
    private String mobile;
    
    /**
     * 角色：1超管 2省 3市 4区 5校
     */
    private Integer role;
    
    /**
     * 类型：1管理员 2普通账号
     */
    private Integer type;
    
    /**
     * 城市码
     */
    private String citycode;
    
    /**
     * 父级ID
     */
    private Long pid;
    
    /**
     * 是否阅卷人员
     */
    private boolean yuejuan = false;
    
    /**
     * 检查是否为超级管理员
     */
    public boolean isSuperAdmin() {
        return role != null && role == 1;
    }

    /**
     * 检查是否为管理员类型
     */
    public boolean isAdmin() {
        return type != null && type == 1;
    }

    /**
     * 检查是否有指定城市码的权限
     */
    public boolean hasCitycodePermission(String targetCitycode) {
        if (isSuperAdmin()) {
            return true;
        }
        
        if (citycode == null || targetCitycode == null) {
            return false;
        }
        
        // 上级可以管理下级的数据
        return targetCitycode.startsWith(citycode);
    }

    /**
     * 检查是否有管理权限（非校级）
     */
    public boolean hasManagePermission() {
        return role != null && role <= 4; // 1超管 2省 3市 4区
    }
}